Flash memory system control scheme

ABSTRACT

A Flash memory system architecture having serially connected Flash memory devices to achieve high speed programming of data. High speed programming of data is achieved by interleaving pages of the data to be programmed amongst the memory devices in the system, such that different pages of data are stored in different memory devices. A memory controller issues program commands for each memory device. As each memory device receives a program command, it either begins a programming operation or passes the command to the next memory device. Therefore, the memory devices in the Flash system sequentially program pages of data one after the other, thereby minimizing delay in programming each page of data into the Flash memory system. The memory controller can execute a wear leveling algorithm to maximize the endurance of each memory device, or to optimize programming performance and endurance for data of any size.

CROSS REFERENCE TO RELATED APPLICATIONS

This is a Continuation application of U.S. patent application Ser. No.11/693,027 filed on Mar. 29, 2007, which claims the benefit of priorityof U.S. Provisional Patent Application No. 60/788,083 filed Mar. 31,2006, which is incorporated herein by reference in its entirety.

FIELD OF THE INVENTION

The present invention relates generally to Flash memory. Moreparticularly, the present invention relates to a multi-device Flashmemory system for mass storage applications.

BACKGROUND OF THE INVENTION

Flash memory is a commonly used type of non-volatile memory inwidespread use as mass storage for consumer electronics, such as digitalcameras and portable digital music players for example. The density of apresently available Flash memory chip can be up to 32 Gbits (4 GB),which is suitable for use in popular USB Flash drives since the size ofone Flash chip is small.

The advent of 8 mega pixel digital cameras and portable digitalentertainment devices with music and video capabilities has spurreddemand for ultra-high capacities to store the large amounts of data,which cannot be met by the single Flash memory device. Therefore,multiple Flash memory devices are combined together into a memory systemto effectively increase the available storage capacity. For example,Flash storage densities of 20 GB may be required for such applications.

FIG. 1 is a block diagram of a prior art Flash memory system 10integrated with a host system 12. Flash memory system 10 includes aFlash memory controller 14 in communication with host system 12, andmultiple non-volatile memory devices 16. The host system will include aprocessing device such as a microcontroller, microprocessor, or acomputer system. The Flash memory system 10 of FIG. 1 is configured toinclude one channel 20, where memory devices 16 are connected inparallel to channel 20. Those skilled in the art will understand thatthe memory system 10 will have any number of memory devices connected toit.

Channel 20 includes a set of common buses, which include data andcontrol lines that are connected to all its corresponding memorydevices. While not shown, each memory device is enabled/disabled with arespective chip select signal provided by Flash memory controller 14.The Flash controller 14 is responsible for issuing commands and data,via the channel, to a selected memory device based on the operation ofthe host system 12. Data read from the memory devices is transferred viathe channel back to the Flash memory controller 14 and host system 12.Flash memory system 10 is generally referred to as a multi-dropconfiguration, in which the memory devices 16 are connected in parallelwith respect to channel 20.

In Flash memory system 10, non-volatile memory devices 16 are identicalto each other, and are typically implemented as NAND Flash memorydevices. Those skilled in the art will understand that Flash memory isorganized into banks, and each bank is organized into blocks tofacilitate block erasure. Most commercially available NAND Flash memorydevices are configured to have two banks of memory. Prior to adiscussion of the operation of Flash memory system 10, a brief overviewof a single NAND Flash memory device memory core is described.

FIG. 2 is a general block diagram of one bank of a known NAND Flashmemory. Bank 30 is organized into k+1 blocks. Each block consists ofNAND memory cell strings, having up to i+1 Flash memory cells seriallyconnected to each other. Accordingly, wordlines WL0 to WLi are connectedto the gates of each Flash memory cell in the memory cell string. Astring select device connected to signal SSL (string select line)selectively connects the memory cell string to a bitline, while a groundselect device connected to signal GSL (ground select line) selectivelyconnects the memory cell string to a source line, such as VSS. Thestring select device and the ground select device are n-channeltransistors. There are j+1 bitlines common to all blocks of bank 30, andeach bitline is connected to one NAND memory cell string in each ofblocks [0] to [k]. Each wordline (WL0 to WLi), SSL and GSL signal isconnected to the same corresponding transistor device in each NANDmemory cell string in the block. As those skilled in the art should beaware, data stored in the Flash memory cells along one wordline isreferred to as a page of data.

Connected to each bitline outside of the bank 30 is a data register 32for storing one page of write data to be programmed into one page ofFlash memory cells. Data register 32 also includes sense circuits forsensing data read from one page of Flash memory cells. Duringprogramming operations, the data registers perform program verifyoperations to ensure that the data has been properly programmed into theFlash memory cells connected to the selected wordline. Programmingwithin a block typically starts at the page corresponding to WL0, andproceeds sequentially up to WLi to fill the present block. Thenprogramming continues with WL0 of a new block. Within a device, blocksare programmed in sequence.

Returning to the Flash memory system 10 of FIG. 1, there are specificissues that will adversely impact performance of the system. Some arephysical while others are architectural.

The configuration of Flash memory system 10 imposes physical performancelimitations. With the large number of parallel signals running acrossthe system, the signal integrity of the signals they carry will bedegraded by crosstalk, signal skew, and simultaneous switching noise(SSN). Power consumption in such a configuration becomes an issue aseach signal track between the flash controller and flash memory devicesis frequently charged and discharged for signaling. With increasingsystem clock frequencies, the power consumption will increase as well.

From an architectural perspective, programming operations will take toomuch time. A primary function of the Flash controller 14 is to managethe writing of data to the memory devices in the system. In the Flashmemory context, writing of data is more commonly referred to asprogramming data. There are two significant issues related to Flashprogramming. First, Flash programming is slow relative to volatilememories such as DRAM and SRAM, and other non-volatile memories such ashard disk drives. Programming data to Flash memory cells requires highvoltages and a stepped programming sequence to obtain a tight programmedthreshold voltage distribution. In a NAND Flash memory device having twobanks of memory, two pages of data are concurrently programmed, one foreach bank. Since there is only one data register per bank, furtherprogramming operations must wait until the current pages have beensuccessfully programmed. Therefore, programming large quantities of datato the Flash devices 16 may require a significant amount of time.

A second issue with the conventional Flash memory system 10 is thelinear file structure of the program data. FIG. 3 is an illustration ofthe conventional file structure for a Flash memory system 50 having fourmemory devices. In FIG. 3, each memory device 52, 54, 56 and 58 has atotal of n physical pages of storage space, which are divided among anynumber of blocks. In the presently shown example, it is assumed that then pages are divided equally between two banks. Most Flash memory systemswill store a data file consisting of a number of data pages, linearlywithin one memory device. For example, the first page of the data fileis stored in Page 0 of device 52, and successive data pages areprogressively stored in subsequent pages. Once device 52 is full, thenfurther data files to be stored in system 50 starts at Page 0 in device54, and so forth. Arrow 60 shows the storage pattern of data beingwritten to the Flash memory system 50.

This linear file structure coupled with the relatively long programmingtime per page of the data file per memory device, results in a Flashmemory system that requires significant time to store data. Anotherissue which is related to the linear file structure is devicereliability, and more specifically, program/erase wearing of one memorydevice relative to the other memory devices in the system. Program/erasewearing refers to a progressive degradation of a Flash memory cell dueto cumulative program and erase operations. The effect of suchcumulative program and erase operations is the alteration of the programand erase characteristics of the memory cell beyond optimal parameters.When memory cells are degraded, higher program and erase voltages areneeded to program or erase the memory cells to the desired thresholdvoltages. Eventually, the memory cells will fail to function properly.This is the reason that Flash memory are rated for a limited number oferase-program cycles, which is between 10,000 and 100,000 cycles.

If for example, the first memory device 52 in FIG. 3 endures moreprogram and erase cycles than any of the other memory devices, memorydevice 52 will likely fail before the others. When memory device 52fails, the entire system 50 is no longer usable since the memory devicesare packaged together and replacement of a single memory device isimpractical. This is an unfortunate waste of memory devices, as theremaining devices in the system are still useful and may havesignificant life left.

An inherent technical architecture of most Flash memory is that thesmallest unit of memory which is erasable is a block of memory. Thismeans that if even one page within the block is to be modified, theentire block must be re-programmed along with the new page. This isreferred to as block re-programming, which requires significantprogramming time and hence negatively impacts performance of the system.

Therefore, presently known Flash memory systems have slow throughput forprogramming data, and due to the unequal program and erase wearingacross the devices, the entire system will have a lifespan limited tothe first memory device to fail.

It is, therefore, desirable to provide a high speed Flash memory systemarchitecture having a scheme for maximizing the lifespan of the system.

SUMMARY OF THE INVENTION

It is an object of the present invention to obviate or mitigate at leastone disadvantage of previous control schemes for Flash memory systems.In particular, it is an object of the present invention to improve Flashmemory system programming throughput by interleaving programmingoperations in each Flash memory device of the system.

In a first aspect, the present invention provides a method forcontrolling first and second Flash memory devices connected to achannel. The method includes executing a first operation in the firstFlash memory device in response to a first command, and initiating asecond operation in the second Flash memory device in response to the asecond command, while the first Flash memory device is executing thefirst operation.

In an embodiment of the present aspect, the first Flash memory deviceand the second Flash memory device are serially connected to each other,and the second command is passed to the second Flash memory devicethrough the first Flash memory device before the step of initiating. Infurther embodiments, the step of executing the first operation includesprogramming at least one page of a data file in the first memory device.The second operation includes initiating programming of at least oneother page of the data file in the second memory device, while themethod further includes initiating a third operation in the first Flashmemory device in response to a third command. The second operationincludes initiating a read operation of data in the second memory deviceor initiating an erase operation in the second memory device. In yetanother embodiment, executing the first operation includes one of a readoperation and an erase operation in the first memory device.

In a second aspect, the present invention provides a method for highspeed wear leveling programming in a Flash memory system having aplurality Flash memory devices. The method includes receiving a datafile having k pages, k being an integer greater than 0; selecting aprogramming profile corresponding to the size of k and configurationparameters of the Flash memory system; and programming at least one ofthe k pages of the data file in each of to at least two of the pluralityof Flash memory devices in accordance with the selected programmingprofile.

According to an embodiment of the present aspect, the configurationparameters includes j Flash memory devices, and each of the j Flashmemory devices have i pages per block, where j and i are integer valuesgreater than 0. The step of selecting includes calculating a ceilingfunction of z, where z=k/i, and the programming profile includes asingle file structure for storing k pages of the data file in z of jFlash memory devices when z is less than or equal to j. The step ofprogramming includes sequentially providing program commands to each ofthe z Flash memory devices for programming the k pages, where eachprogram command programs the at least one of the k pages.

In another embodiment of the present aspect, the programming profileincludes a multiple file structure when z is greater than j. Themultiple file structure includes storing m units of j*i pages of thedata file in j Flash memory devices, and storing k−(m*(j*i)) pages ofthe data file in z of j Flash memory devices when z is less than orequal to j, where m is an integer value greater than 0. The step ofprogramming includes sequentially providing program commands to each ofthe j Flash memory devices for programming the j*i pages of the datafile, where each program command programs the at least one of the kpages. The step of programming further includes sequentially providingprogram commands to each of the z Flash memory devices for programmingthe k−(m*(j*i)) pages, where each program command programs the at leastone of the k pages.

In a third aspect, the present invention provides a data file storagearchitecture for a memory system having at least two memory devicesconnected to the same channel. The data file storage architectureincludes portions of the data file stored in two of the at least twomemory devices. According to embodiments of the present aspect, theportions are substantially equal in size to each other, and the portionsare stored in each of the at least two memory devices of the memorysystem.

In a fourth aspect, the present invention provides a method for highspeed wear leveling programming in a Flash memory system having j Flashmemory devices, where each of the j Flash memory devices has i pages perblock, where j and i are integer values greater than 0. The methodincludes receiving a data file having k pages, k being an integergreater than 0; providing commands for programming k pages within z of jmemory devices if a ceiling function of z=k/i is less than or equal toj; providing commands for programming ri pages within j memory devicesif the ceiling function of z=k/i is greater than j; updating k bysetting k=k−(j*i); and repeating the step of programming updated kpages.

In a fifth aspect, the present invention provides a Flash memory system.The Flash memory system includes a controller, a first Flash memorydevice, and a second Flash memory device. The controller has a channelfor providing a first command and a second command. The first Flashmemory device is coupled to the channel for executing a first operationin response to the first command. The second Flash memory device iscoupled to the channel for initiating a second operation in response tothe second command while the first Flash memory device is executing thefirst operation.

According to embodiments of the present aspect, the first Flash memorydevice and the second Flash memory device are serially connected to eachother, and the second command is passed to the second Flash memorydevice through the first Flash memory device. The first operationincludes a programming operation, and the first Flash memory deviceprograms at least one page of a data file. The second operation includesanother programming operation, and the second Flash memory deviceprograms at least one other page of the data file.

Other aspects and features of the present invention will become apparentto those ordinarily skilled in the art upon review of the followingdescription of specific embodiments of the invention in conjunction withthe accompanying figures.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the present invention will now be described, by way ofexample only, with reference to the attached Figures, wherein:

FIG. 1 is a block diagram of a prior art Flash memory system;

FIG. 2 is a schematic of a prior art NAND Flash memory core;

FIG. 3 is an illustration of a conventional file structure for a Flashmemory system;

FIG. 4 is a block diagram of a Flash memory system according to anembodiment of the present invention;

FIG. 5 is a timing diagram of program commands issued by the Flashcontroller of FIG. 4, according to an embodiment of the presentinvention;

FIG. 6 is a timing diagram showing program commands received by eachmemory device of the Flash memory system in FIG. 4;

FIG. 7 is a flow chart illustrating a high speed interleaved programmingmethod, according to an embodiment of the present invention;

FIG. 8 is a graphical illustration of a file structure in the Flashmemory system in FIG. 4 resulting from the high speed interleavedprogramming method of FIG. 7;

FIG. 9 is a flow chart illustrating a high speed wear levelingprogramming method, according to an embodiment of the present invention;and

FIG. 10 is a timing diagram showing interleaved program and readoperations.

DETAILED DESCRIPTION

A Flash memory system architecture having serially connected Flashmemory devices to achieve high speed programming of data. High speedprogramming of data is achieved by interleaving pages of the dataamongst the memory devices in the system, such that different pages ofdata are stored in different memory devices. A memory controller issuesprogram commands for each memory device in a bitstream having one ormore signal lines. As each memory device receives a program command, iteither begins a programming operation or passes the command to the nextmemory device. Therefore, the memory devices in the Flash systemsequentially program pages of data one after the other, therebyminimizing delay in programming each page of data into the Flash memorysystem. The memory controller executes a wear level control algorithm tooptimize programming performance and endurance for data of any size.

FIG. 4 is a block diagram of a Flash memory system having seriallyconnected memory devices for executing high speed data programmingoperations with wear level control, according to an embodiment of thepresent invention. Flash memory system 100 includes a Flash memorycontroller 102 in communication with host system 104, and four seriallyconnected Flash memory devices 106, 108, 110 and 112. While four memorydevices are shown in the present embodiment, the embodiments of thepresent invention will be effective for memory systems having at leasttwo memory devices. Each of the four Flash memory devices have a serialinput/output interface circuit for facilitating serial operation betweenmemory devices. An example of a such a Flash memory device is describedin commonly owned U.S. patent application Ser. No. 11/324,023, filed onDec. 30, 2005, and commonly owned U.S. patent application Ser. No.11/496,278, filed on Jul. 31, 2006., the contents of which areincorporated herein by reference. The Flash memory device of U.S. patentapplication Ser. No. 11/324,023 is referred to as a multiple independentserial link device (MISL). As in the system shown in FIG. 1, the hostsystem will include a processing device such as a microcontroller,microprocessor, or a computer system.

Flash memory device 106 is the first device in the chain, and receivescommands, such as read, program and erase commands, from Flash memorycontroller 102. In the MISL Flash device of U.S. patent application Ser.No. 11/324,023, all commands, data and address information are receivedas a serial bitstream. The commands include data information, addressinformation, and any other information required by the memory device forexecuting a particular operation. As each Flash memory device shouldinclude flow-through logic circuitry, any received command not intendedfor a particular device is passed to the next Flash memory device, andso forth, until it is acted upon by the intended Flash memory device.The last Flash memory device 112 in the chain has outputs connected tothe Flash memory controller 102, for providing read data in response toa read command. The presently shown embodiment of FIG. 4 has one channelfor sending and receiving data from the chain of Flash memory devices.Those skilled in the art will understand that Flash memory controller102 will optionally have multiple channels for accommodating acorresponding number of Flash memory device chains. Since each Flashmemory device is preferably positioned in close proximity with theother, conducting wires interconnecting the Flash memory devices to eachother will be minimized. Therefore, there are no physical performancelimitations related to bus line length, as in Flash memory system 10 ofFIG. 1.

As previously discussed, the Flash memory controller 102 is responsiblefor issuing program commands for each Flash memory device. For highspeed programming of data according to an embodiment of the presentinvention, pages of a data file are programmed to different memorydevices. This is done by issuing program commands serially one after theother to initiate program operations in each Flash memory device inrapid succession. FIGS. 5 and 6 will help illustrate how such high speedprogramming is achieved.

FIG. 5 is a timing diagram illustrating the issuance of program commandsby the Flash memory controller 102 for maximizing overall programmingspeed for the Flash memory system 100, according to an embodiment of thepresent invention. In the presently shown example, four program commandsData[0], Data[1], Data[2] and Data[3] are issued serially at respectivetime periods t1 to t4 by Flash memory controller 102 to program one datafile. The identification number within square brackets for each programcommand indicates the sequential order the program command was issuedfrom the Flash memory controller 102. Each programming command willinclude, but is not limited to, a command 200 and at least one page ofdata 202 for a specific memory device. The command 200 includes anaddress to which the page of data is to be programmed, and a deviceidentifier for matching the programming command to the specific memorydevice. Flash memory devices 106, 108, 110 and 112 are responsive toprogram commands Data[0], Data[1], Data[2] and Data[3] respectively.Since the Flash memory devices are serially connected and the programcommands are issued serially, the core programming operations of eachFlash memory device overlap with the operations of the subsequent Flashmemory device, with the exception of the last Flash memory device thatreceives a programming command.

If it is assumed that each programming command requires about 85microseconds to transfer to the memory device (time t1), then the totalsequence for transferring the four program commands will require 4×85microseconds=340 microseconds. The time required for programming the atleast one page of data per memory device is fixed, and assumed to beabout 200 microseconds. Therefore, the total elapsed time forprogramming all the data to the Flash memory system 100 will be about340 microseconds+200 microseconds=540 microseconds. The 200 microsecondprogramming time is contributed by the last memory device to receive aprogramming command. In contrast, programming 4 pages to the same memorydevice will take 1140 microseconds. The overlapping programmingoperations of the Flash memory devices is more clearly shown in theexpanded timing diagram of FIG. 6.

FIG. 6 is an expanded timing diagram showing the operations of Flashmemory devices 106, 108, 110 and 112 in response to respective programcommands Data[0], Data[1], Data[2] and Data[3]. The time periods t1 tot4 correspond to the same time periods shown in FIG. 5. The programmingsequence of FIG. 6 will now be described with reference to the flowchart of FIG. 7. The Flash system programming control embodimentdescribed in FIG. 7 will be referred to as a high speed interleavedprogramming method, whereby programming operations are interleavedbetween different memory devices. The method begins at step 300 where atleast two program commands are provided serially to the first memorydevice 106 in the system. The first program command corresponds toprogram command Data[0] while the second program command corresponds toprogram command Data[1]. At step 302, memory device 106 receives programcommand Data[0] during a first time period t1, which is followed by aprogram operation at step 304. During time period t1, program commandData[0] is transferred to memory device 106 while memory devices 108,110 and 112 remain in a no operation (NOP) state.

As soon as program command Data[0] has been transferred to memory device106, the second program command Data[1] is received by memory device 108during a second time period t2 at step 306. A program operation followsat step 308, and because the programming operation for memory device 106has already commenced at the end of time period t1, there is a period oftime where both memory devices 106 and 108 are executing programmingoperations at the same time. The process would repeat in the same mannerfor the next program command and memory device. In the present example,programming operations in memory devices 106 and 108 will have beencompleted by the end of time period t4. The programming operation inmemory device 110 will be completed as the programming operation inmemory device 112 continues.

The above example presents a scenario where the first memory device toreceive a command is 106. Alternately, any one of the memory devices inthe system can be the first memory device to receive the first programcommand. A fifth program command is issued to memory device 106 aftertime period t4, provided that device 106 has finished its programmingoperation. Those skilled in the art will understand that different Flashmemory devices will have varying programming times. In the presentlyshown example of FIG. 6, memory device 106 has finished programming itsdata at the beginning of time period t4, therefore it is ready toreceive the next program command Data[4] as soon as memory device 112has finished receiving program command Data[3]. If the Flash memorydevice has a very long core programming time, then the Flash memorycontroller will need to wait until memory device 106 has completedprogramming operations before issuing the Data[4] program command. Flashmemory devices will typically provide a ready status signal to the Flashmemory controller to indicate when a programming operation is completed.

FIG. 8 is a graphical file structure illustration of Flash memorydevices 106, 108, 110 and 112 after the high speed programming sequencedescribed in FIG. 6 and FIG. 7 has been executed for program commandsData[0], Data[1], Data[2], Data[3] and Data[4]. The file structure shownin FIG. 8 assumes that memory blocks of devices 106, 108 and 112 areempty prior to programming. This is why pages are programmed to physicalpage 0 of these devices. In memory device 110 on the other hand, thememory block may have other data in physical pages 0 and 1. Therefore,Data[2] is programmed to the next available page in the block, which isin physical page 2. As shown in FIG. 8, physical page 1 of memory device106 is the last page to be programmed in the presently shown high speedprogramming sequence. The next programming sequence will startprogramming data at physical page 1 of memory device 108, and willproceed in the same manner as previously described for the programmingsequence shown in FIG. 6. Therefore, maximum programming speed of Flashmemory system 100 is obtained when program commands are serially issuedto consecutive serially connected memory devices. In otherwords, a filestructure in which data is distributed across the maximum number ofmemory devices in the serially interconnected Flash memory system willresult in highest speed programming of a data file. It should be notedthat data does not necessarily need to be programmed in the samephysical page number across all the memory devices.

While high speed programming is beneficial to systems using Flash memorysystem 100, some systems may require maximized endurance of the Flashmemory system 100. The file structure shown in FIG. 8 will not maximizeprogram/erase wear across all memory devices, mainly due to the blockerase architecture of Flash memory devices. For example, if a 20 pagedata file is interleaved programmed across one block in each memorydevice, then there is a possibility that all four memory devices willneed to perform a block erase before updating the data file. Incontrast, if all 20 pages were stored in one block of one memory device,then only that block needs to be erased.

Therefore, according to another embodiment of the invention, the abovedescribed high speed programming control method is adjusted to minimizeprogram/erase wear, or to optimize programming performance andprogram/erase wear. More specifically, the Flash controller 102 of FIG.4 executes a program control algorithm for optimizing programperformance and program/erase wear based on predetermined criteria. Thispredetermined criteria will include characteristics of the data to beprogrammed and characteristics of the memory devices of the Flash memorysystem. Data characteristics include the number of pages of the data tobe programmed, and memory device characteristics include the number ofpages per block.

FIG. 9 is a flow chart illustrating an embodiment for programmingmultiple Flash memory devices in a Flash memory system with high speedand with wear leveling control. This program control embodiment will bereferred to as a high speed wear leveling programming method. Wearleveling refers to a scheme for prolonging the life of the Flash memorysystem. The presently described embodiment will optimize wear levelingand performance for any data file to be programmed, by using a varietyof programming profiles. A programming profile generally corresponds toa programming sequence for storing pages of a data file with a specificfile storage structure. Ultimately, the programming profile distributespages of the data file across the memory devices of the Flash memorysystem. The presently described method is executable by a memorycontroller, such as Flash controller 102 of FIG. 4, in a system ofserially connected memory devices.

The high speed wear leveling programming method starts at step 400 wherea variable i is set to be the number of pages per block in each memorydevice of the Flash memory system, and a variable j is set to be thenumber of memory devices in the Flash memory system. It is presumed thatall the memory devices in the Flash memory system are identical to eachother, and have the same block size. This information is pre-programmedinto the memory controller. At step 402, a data file consisting of anumber of pages k, is received by the memory controller for programming.Proceeding to step 404, a calculation is made to determine if k is lessthan or equal to i. If k is less than or equal to i, meaning that thedata file is less than or equal to one block of storage space in amemory device, then all k pages of the data file are programmed to oneblock of one memory device at step 406. This is an example of aprogramming profile having a single file structure. The memorycontroller selects the specific memory device to which the data filewill be programmed to in accordance with one or more selectionparameters. For example, one selection parameter is the memory devicewith the highest number of remaining program/erase cycles, while anotherselection parameter includes the last memory device to be programmed to.

On the other hand, if k is greater than i, meaning that the data fileincludes more pages than one block of storage space in a memory device,then the method proceeds to step 408. At step 408, a calculation is madeto determine if k/i is less than or equal to j. It should be noted thatthe calculation of k/i should yield integer numbers only. Since thepresent method determines the minimum number of blocks required forstoring the k data, a non-integer result having a whole number anddecimal portion (ie. a real number) indicates that one block more thanthe whole number is required. This is done through known mathematicalfunctions such as a ceiling function. Those skilled in the art willunderstand that a ceiling function returns the smallest integer that isnot less than the real number. On the other hand, a direct integerresult from k/i does not require further mathematical processing. Fromthis point forward, reference to the k/i result will presume that aceiling function has been applied to it.

If the k/i integer value is less than j, the number of memory devices inthe Flash memory system, then the k pages of the data file areinterleave programmed between k/i memory devices in step 410. This isanother example of a programming profile having a single file structure.The interleave programming will proceed as previously described in themethod of FIG. 7. In a practical example, if i=32, j=4 and k=61, thenk/i=1.90. Since k/i results in a real number, a ceiling function appliedto 1.90 results in the integer number 2. Hence in step 410, all k=61pages are interleave programmed across 2 memory devices. The memorycontroller selects any two memory devices in the Flash memory system,whether they are directly connected together or indirectly connectedtogether. Two indirectly connected memory devices can have at least oneintervening memory device connected between them. Since the data file isprogrammed within two memory devices, about half of the pages areprogrammed in one memory device and the remainder is stored in the othermemory device.

If k/i is at least j, the number of memory devices in the system, thendifferent optimization programming sequences, will be used forprogramming differently sized groups of the data file. Morespecifically, very large data files are treated as multiple units ofsmaller data files, which are programmed according to any one of thepreviously described programming sequences. Continuing at step 412, allpage locations in one block of each memory device is programmed with j*ipages of the k pages of the data file, according to the interleavedprogramming sequence of step 410. Following at step 414, the number ofpages k is updated by setting it equal to k−(j*i). Therefore, theremaining number of pages to be programmed is calculated. The methodloops back to step 404 to repeat the decision tree processing andprogramming sequences based on the updated value of k. In summary, thepresent method will iteratively program multiple units of j*i pages ofthe data file using the same file structure for each unit of j*i pages,and then program the remaining k−(j*i) pages using a different filestructure. Hence the present method has a programming profile consistingof multiple file structures for the data file.

A practical example will now be used to illustrate this embodiment. Ifi=32, j=4 and k=192, then the first 128 pages will be programmed acrossall the memory devices as described in step 412. At step 414, k isupdated to be 192−(128)=64. Then the remaining 64 pages are programmedacross two memory devices as described in step 410. As previouslymentioned, any two memory devices are selected for programming theremaining 64 pages. While the presently described embodiment illustratesa method where programming is followed by recalculation of k, the entiresequence can be determined by the Flash controller in advance and beforeany programming operations begin by employing the above describedcalculations. While it is presumed that the first pages of the data fileto be programmed are the j*i pages, the first pages to be programmed canbe the k−(j*i) pages instead, followed by the multiple units of j*ipages.

The presently described high speed wear leveling programming method hasbeen described for a Flash memory system having a single channel, suchas the embodiment shown in FIG. 4. The previously described embodimentsof the invention are executed in a Flash memory system having two ormore channels. In such alternate embodiments, at least two data filesare concurrently programmed; a first data file in one channel and asecond data file in another channel.

Additionally, the present embodiment has been described in operationwith memory devices having a single memory bank. Of course, memorydevices having two or more memory banks can be used. With two memorybanks, there will be two available page buffers for storing up to twopages of data. In a multi-bank device configuration, several programmingoptions are available. In a first option, all the pages of data to beprogrammed to one memory device are programmed to one block within onebank of the memory device. The operation would be analogous to a memorydevice having only one memory bank. In a second option, two pages of thedata file are loaded into one memory device concurrently, or in a singleprogram command. This will effectively increase programming throughputas each memory device will program two pages at the same time. In athird option, programming operations are interleaved between banks ofthe memory devices. For example, programming pages to two memory deviceswill proceed in the following sequence: device 1 [bank 1], device 2[bank 1], device 1 [bank 2], and device 2 [bank 2]. The programmingsequence should be obvious for memory devices having more than 2 banks.

Furthermore, while the previously described high speed wear levelingprogramming method has been described for Flash memory systems havingserially connected, or daisy-chained memory devices, the embodiments areapplicable to multi-drop configured Flash systems such as the one shownin FIG. 1. This is done by enabling the appropriate memory device andproviding the corresponding command data onto the common busses atdifferent times.

The previously described embodiments of the invention illustrateexamples where programming operations in the Flash memory system of FIG.4 are interleaved. According to another embodiment of the invention,interleaved program and read operations are executed by the Flash memorysystem of FIG. 4.

FIG. 10 is a timing diagram illustrating high speed interleaved read andprogram operations for the Flash memory system of FIG. 4. In thisexample, memory devices 106 and 112 are to be programmed with data,while memory devices 108 and 110 are to provide read data. During timeperiod t1, memory device 106 receives a program command Data[0], andthen immediately commences core internal sequences for programming thedata. At the beginning of time period t2, a read command is received bymemory device 108, and internal data transfer operations (xfer) proceed.An internal data transfer operation will take 20 micro seconds forexample, for reading out the data and loading the data registers, afterwhich time the Flash controller will issue the read command for memorydevice 110 at the beginning of time period t3. An internal NOP period500 is entered by memory device 108 to allow flow-through of a commandto a downstream memory device before outputting data from its dataregisters.

Memory device 110 will commence its internal data transfer operationafter receiving its respective read command. However, now that thesignal lines between memory devices 108 and 110 are unused, upstreammemory device 108 will begin outputting the data in its data registersto memory device 110, which passes the data through to memory device112. This is done in a sequential manner, for example. At the end oftime period t3, memory device 108 will have finished outputting all itsread data, thereby allowing memory device 110 to start outputting itsread data at the start of time period t4. Since memory device 110 cannotoutput its data until memory device 108 has finished outputting itsdata, an internal NOP period 502 is entered. At the end of time periodt4, the signal lines between memory devices 110 and 112 will be unusedas all the data from memory device 110 has been outputted through memorydevice 112. Hence at the beginning of time period t5, memory device 112will receive program command Data[1].

While interleaved read and program operations have been illustrated,interleaved read, program and erase operations are executable in anycombination.

The previously described high speed interleaved programming method isused to maximize programming performance in a Flash memory system havingserially connected memory devices. High speed interleaved programming isapplied to data files of any size. However, to improve endurance of allthe memory devices, a high speed wear leveling programming method isused to distribute the pages of a data file with a file structure basedon a size of the data file. While the embodiments are directed to Flashmemory devices, the embodiments of the invention are applicable to othermemory devices in which pages of data files are programmed or written toat least two memory devices.

In the preceding description, for purposes of explanation, numerousdetails are set forth in order to provide a thorough understanding ofthe embodiments of the invention. However, it will be apparent to oneskilled in the art that these specific details are not required in orderto practice the invention. In other instances, well-known electricalstructures and circuits are shown in block diagram form in order not toobscure the invention. For example, specific details are not provided asto whether the embodiments of the invention described herein areimplemented as a software routine, hardware circuit, firmware, or acombination thereof.

Embodiments of the invention can be represented as a software productstored in a machine-readable medium (also referred to as acomputer-readable medium, a processor-readable medium, or a computerusable medium having a computer-readable program code embodied therein).The machine-readable medium can be any suitable tangible medium,including magnetic, optical, or electrical storage medium including adiskette, compact disk read only memory (CD-ROM), memory device(volatile or non-volatile), or similar storage mechanism. Themachine-readable medium can contain various sets of instructions, codesequences, configuration information, or other data, which, whenexecuted, cause a processor to perform steps in a method according to anembodiment of the invention. Those of ordinary skill in the art willappreciate that other instructions and operations necessary to implementthe described invention can also be stored on the machine-readablemedium. Software running from the machine-readable medium can interfacewith circuitry to perform the described tasks.

The above-described embodiments of the invention are intended to beexamples only. Alterations, modifications and variations can be effectedto the particular embodiments by those of skill in the art withoutdeparting from the scope of the invention, which is defined solely bythe claims appended hereto.

1. A method for programming in a Flash memory system having a pluralityFlash memory devices, the method comprising: receiving a data filehaving a plurality of pages; if all of the plurality of pages of thedata file can fit into a single block of one of the plurality of Flashmemory devices, programming all of the plurality of pages of the datafile into the single block of the one of the plurality of Flash memorydevices; otherwise, if all of the plurality of pages of the data filecan fit into a plurality of blocks including one block in each of theplurality of memory devices, interleave programming all of the pluralityof pages of the data file across the plurality of blocks including oneblock in each of the plurality of memory devices; and otherwise,interleave programming a subset of the plurality of pages of the datafile into a plurality of blocks including one block in each of theplurality of memory devices and removing the subset of the plurality ofpages of the data file from the data file.
 2. The method as claimed inclaim 1 further comprising repeating interleave programming of thesubset of the plurality of pages of the data file into the plurality ofblocks including one block in each of the plurality of memory devicesand removing the subset of the plurality of pages of the data file fromthe data file.
 3. The method as claimed in claim 1 further comprisingselecting the single block of the one of the plurality of Flash memorydevices according to a highest number of remaining program/erase cyclesremaining for the memory device.
 4. The method as claimed in claim 1further comprising selecting the single block of the one of theplurality of Flash memory devices according to a last memory deviceprogrammed.
 5. The method as claimed in claim 1 wherein interleaveprogramming comprises sequentially providing program commands to each ofthe plurality of memory devices.
 6. The method as claimed in claim 5,wherein the sequentially provided program commands are executed inoverlapping time periods.